热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

相位|量纲_matlab信号的频域分析

篇首语:本文由编程笔记#小编为大家整理,主要介绍了matlab信号的频域分析相关的知识,希望对你有一定的参考价值。

篇首语:本文由编程笔记#小编为大家整理,主要介绍了matlab 信号的频域分析相关的知识,希望对你有一定的参考价值。


%画出频率为100Hz和300Hz的复合正弦波
Fs=5120;N=1024;
dt=1.0/5120;T=dt*N;
t=linspace(0, T, N);
x=10*sin(2*pi* 100 *t) + 10/3*sin(2*pi* 3*100 *t);
plot(t, x);
%对复合正弦波进行傅里叶变换,得到一个复数
y=fft(x, N);
a=real(y);b=imag(y);%a为y的实部,b为y的虚部
figure;
subplot(2, 1, 1);plot(a);
subplot(2, 1, 2);plot(b);
%A1为y的幅值,Q1为y的相位
A1=abs(y);
Q1=angle(y)*180/pi;%算出弧度,角度是angle(y),角度变弧度需要 *180/pi
figure;
subplot(2, 1, 1);plot(A1);
subplot(2, 1, 2);plot(Q1);


下面是频率为100Hz和300Hz的复合正弦波

傅里叶变换后的实部(上图)和虚部(下图)图

傅里叶变换后的幅值图(上图)和相位图(下图)

实际上,上面的幅值和相位图存在问题
问题1:显示了负频率部分

问题2:X坐标不是频率
问题3:幅值量纲未还原,幅值应该是 10,10/3

更改后的代码

%A1=abs(y);Q1=angle(y)*180/pi;
%figure;
%subplot(2, 1, 1);plot(A1);
%subplot(2, 1, 2);plot(Q1);%算出弧度,角度是angle(y),角度变弧度需要 *180/pi
f=linspace(0, Fs/2, N/2);%定义X坐标为频率,且频率的范围是[0, Fs/2]
A1=abs(y)/(N/2);%还原幅值的量纲,使它最终变为 10,10/3
Q1=angle(y)*180/pi;%算出弧度,角度是angle(y),角度变弧度需要 *180/pi
figure;
subplot(2, 1, 1);
plot(f, A1(1:N/2));
subplot(2, 1, 2);
plot(f, Q1(1:N/2));


在之前的代码的基础上增加功率谱对数功率谱
功率谱就是对幅值进行平方
对数功率谱是对功率谱进行取对数运算

A2=A1.^2;%功率谱
P2=20*log10(A2);%对数功率谱,dB=20*log(P)
figure;
subplot(2, 1, 1);
plot(f, A2(1:N/2));%只画数组A2的[1,N/2]部分
subplot(2, 1, 2);
plot(f, P2(1:N/2));%只画数组P2的[1,N/2]部分

功率谱是上图,对数功率谱是下图,对数功率谱可以更加明显地看出来功率谱中幅值比较小地部分

下面是方波信号的功率谱和对数功率谱,可以非常明显的体会到为什么使用对数功率谱。


推荐阅读
  • 本文介绍了使用Java实现大数乘法的分治算法,包括输入数据的处理、普通大数乘法的结果和Karatsuba大数乘法的结果。通过改变long类型可以适应不同范围的大数乘法计算。 ... [详细]
  • 本文介绍了lua语言中闭包的特性及其在模式匹配、日期处理、编译和模块化等方面的应用。lua中的闭包是严格遵循词法定界的第一类值,函数可以作为变量自由传递,也可以作为参数传递给其他函数。这些特性使得lua语言具有极大的灵活性,为程序开发带来了便利。 ... [详细]
  • Webpack5内置处理图片资源的配置方法
    本文介绍了在Webpack5中处理图片资源的配置方法。在Webpack4中,我们需要使用file-loader和url-loader来处理图片资源,但是在Webpack5中,这两个Loader的功能已经被内置到Webpack中,我们只需要简单配置即可实现图片资源的处理。本文还介绍了一些常用的配置方法,如匹配不同类型的图片文件、设置输出路径等。通过本文的学习,读者可以快速掌握Webpack5处理图片资源的方法。 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • 本文介绍了C#中生成随机数的三种方法,并分析了其中存在的问题。首先介绍了使用Random类生成随机数的默认方法,但在高并发情况下可能会出现重复的情况。接着通过循环生成了一系列随机数,进一步突显了这个问题。文章指出,随机数生成在任何编程语言中都是必备的功能,但Random类生成的随机数并不可靠。最后,提出了需要寻找其他可靠的随机数生成方法的建议。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • 给定一个二维平面上的一些点,通过计算曼哈顿距离,求连接所有点的最小总费用。只有任意两点之间有且仅有一条简单路径时,才认为所有点都已连接。给出了几个示例并给出了对应的输出。 ... [详细]
  • 本文介绍了C#中数据集DataSet对象的使用及相关方法详解,包括DataSet对象的概述、与数据关系对象的互联、Rows集合和Columns集合的组成,以及DataSet对象常用的方法之一——Merge方法的使用。通过本文的阅读,读者可以了解到DataSet对象在C#中的重要性和使用方法。 ... [详细]
  • 如何用UE4制作2D游戏文档——计算篇
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了如何用UE4制作2D游戏文档——计算篇相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 本文内容为asp.net微信公众平台开发的目录汇总,包括数据库设计、多层架构框架搭建和入口实现、微信消息封装及反射赋值、关注事件、用户记录、回复文本消息、图文消息、服务搭建(接入)、自定义菜单等。同时提供了示例代码和相关的后台管理功能。内容涵盖了多个方面,适合综合运用。 ... [详细]
  • 本文介绍了Redis的基础数据结构string的应用场景,并以面试的形式进行问答讲解,帮助读者更好地理解和应用Redis。同时,描述了一位面试者的心理状态和面试官的行为。 ... [详细]
  • Java容器中的compareto方法排序原理解析
    本文从源码解析Java容器中的compareto方法的排序原理,讲解了在使用数组存储数据时的限制以及存储效率的问题。同时提到了Redis的五大数据结构和list、set等知识点,回忆了作者大学时代的Java学习经历。文章以作者做的思维导图作为目录,展示了整个讲解过程。 ... [详细]
  • LeetCode笔记:剑指Offer 41. 数据流中的中位数(Java、堆、优先队列、知识点)
    本文介绍了LeetCode剑指Offer 41题的解题思路和代码实现,主要涉及了Java中的优先队列和堆排序的知识点。优先队列是Queue接口的实现,可以对其中的元素进行排序,采用小顶堆的方式进行排序。本文还介绍了Java中queue的offer、poll、add、remove、element、peek等方法的区别和用法。 ... [详细]
  • 本文由编程笔记小编整理,介绍了PHP中的MySQL函数库及其常用函数,包括mysql_connect、mysql_error、mysql_select_db、mysql_query、mysql_affected_row、mysql_close等。希望对读者有一定的参考价值。 ... [详细]
  • MACElasticsearch安装步骤及验证方法
    本文介绍了MACElasticsearch的安装步骤,包括下载ZIP文件、解压到安装目录、启动服务,并提供了验证启动是否成功的方法。同时,还介绍了安装elasticsearch-head插件的方法,以便于进行查询操作。 ... [详细]
author-avatar
拍友2502882315
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有